home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX 6.2 Development Libraries
/
SGI IRIX 6.2 Development Libraries.iso
/
dist
/
complib.idb
/
usr
/
share
/
catman
/
p_man
/
cat3
/
complib
/
fft1du.z
/
fft1du
Wrap
Text File
|
1996-03-14
|
7KB
|
133 lines
ssssccccfffffffftttt1111dddduuuu,,,,ddddzzzzfffffffftttt1111dddduuuu((((3333FFFF)))) ssssccccfffffffftttt1111dddduuuu,,,,ddddzzzzfffffffftttt1111dddduuuu((((3333FFFF))))
NNNNAAAAMMMMEEEE
ssssccccfffffffftttt1111dddduuuu,,,, ddddzzzzfffffffftttt1111dddduuuu ---- 1D, Real to Complex, Direct Fast Fourier Transforms.
SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
_F_o_r_t_r_a_n :
ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ssssccccfffffffftttt1111dddduuuu(((( ssssiiiiggggnnnn,,,, nnnn,,,, aaaarrrrrrrraaaayyyy,,,, iiiinnnncccc,,,, ccccooooeeeeffffffff ))))
iiiinnnntttteeeeggggeeeerrrr ssssiiiiggggnnnn,,,, nnnn,,,, iiiinnnncccc
rrrreeeeaaaallll aaaarrrrrrrraaaayyyy((((0000::::((((2222****((((((((NNNN++++2222))))////2222))))----1111))))****iiiinnnncccc)))),,,, ccccooooeeeeffffffff((((nnnn++++11115555))))
ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ddddzzzzfffffffftttt1111dddduuuu(((( ssssiiiiggggnnnn,,,, nnnn,,,, aaaarrrrrrrraaaayyyy,,,, iiiinnnncccc,,,, ccccooooeeeeffffffff ))))
iiiinnnntttteeeeggggeeeerrrr ssssiiiiggggnnnn,,,, nnnn,,,, iiiinnnncccc
rrrreeeeaaaallll****8888 aaaarrrrrrrraaaayyyy((((0000::::((((2222****((((((((NNNN++++2222))))////2222))))----1111))))****iiiinnnncccc)))),,,, ccccooooeeeeffffffff((((nnnn++++11115555))))
_C :
####iiiinnnncccclllluuuuddddeeee <<<<fffffffftttt....hhhh>>>>
iiiinnnntttt ssssccccfffffffftttt1111dddduuuu (((( iiiinnnntttt ssssiiiiggggnnnn,,,, iiiinnnntttt nnnn,,,, ffffllllooooaaaatttt ****aaaarrrrrrrraaaayyyy,,,,
iiiinnnntttt iiiinnnncccc,,,, ffffllllooooaaaatttt ****ccccooooeeeeffffffff))));;;;
iiiinnnntttt ddddzzzzfffffffftttt1111dddduuuu (((( iiiinnnntttt ssssiiiiggggnnnn,,,, iiiinnnntttt nnnn,,,, ddddoooouuuubbbblllleeee ****aaaarrrrrrrraaaayyyy,,,,
iiiinnnntttt iiiinnnncccc,,,, ddddoooouuuubbbblllleeee ****ccccooooeeeeffffffff))));;;;
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ssssccccfffffffftttt1111dddduuuu and ddddzzzzfffffffftttt1111dddduuuu compute the Fourier transform of a real sequence.
The k-th index F(k) of the Fourier transform of a real sequence f(i) is
equal to:
F(k) = Sum ( W^(i*k) * f(i) ), for i =0, ..., (N-1)
W = exp( (Sign*2*sqrt(-1)*PI) / N )
The Direct Fourier transform is performed in-place, so the input sequence
is overwritten by its Fourier transform. As the input sequence has real
values, only the first half of the transform is needed. The (N-k)-th
sample of the transform would be the conjugate of the k-th sample.
However, some extra space is necessary. For an N sample sequence, the
output complex transform takes ((N+2)/2) complex values. This represents
either N+1(odd case) or N+2(even case) real values, that's one or two
more real values than the input real sequence.
PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
SSSSIIIIGGGGNNNN Integer specifying which sign to be used for the expression of W
(see above) - must be either +1 or -1.
Unchanged on exit.
NNNN Integer, the number of samples in each sequence.
Unchanged on exit.
AAAARRRRRRRRAAAAYYYY Array containing the samples of the sequence to be transformed.
On input, the element "i" of the sequence is stored as A(i*inc) in
_F_o_r_t_r_a_n , and A[i*inc] in _C.
On exit, the array is overwritten by its transform.
PPPPaaaaggggeeee 1111
ssssccccfffffffftttt1111dddduuuu,,,,ddddzzzzfffffffftttt1111dddduuuu((((3333FFFF)))) ssssccccfffffffftttt1111dddduuuu,,,,ddddzzzzfffffffftttt1111dddduuuu((((3333FFFF))))
IIIINNNNCCCC Integer, increment between two consecutive elements of a sequence.
Unchanged on exit.
CCCCOOOOEEEEFFFFFFFF Array of at least ( N + 15 ) elements. On entry it contains the
Sines/Cosines and factorization of N. COEFF needs to be initialized with
a call to scfft1dui or dzfft1dui.
Unchanged on exit.
EEEExxxxaaaammmmpppplllleeee ooooffff CCCCaaaalllllllliiiinnnngggg SSSSeeeeqqqquuuueeeennnncccceeee
Direct Fourier Transform of a sequence of 1024 real values. Elements of
sequence are stored with increment (stride) 1.
_F_o_r_t_r_a_n
real array(0:1026-1), coeff(1024+15)
call scfft1dui( 1024, coeff)
call scfft1du( -1, 1024, array, 1, coeff)
_C
#include <fft.h>
float array[1026], *coeff;
coeff = scfft1dui( 1024, NULL);
scfft1du( -1, 1024, array, 1, coeff);
SSSSEEEEEEEE AAAALLLLSSSSOOOO
fft, scfft1dui, dzfft1dui, csfft1du, zdfft1du
PPPPaaaaggggeeee 2222